#ifndef __SHMIPC_COM_INTERNAL_UDS_COM_H__
#define __SHMIPC_COM_INTERNAL_UDS_COM_H__

#include <vector>
#include <memory>

#include "shmipc/core/xresult.h"
#include "shmipc/com/com_types.h"
#include "shmipc/com/xmessage.h"


namespace shmipc::com::internal {

struct UdsPrvMsg { /** message payload structure: |fd_num(4)| *| */
    uint32_t payload_size;
    std::shared_ptr<uint8_t> payload;
    std::vector<int32_t> fds;
}; 

enum XUdsPrvMsgType: uint8_t {
    UDPM_TypeSendFileIdentify = 0x01, /** Send file identify with Unix domain socket, @see UdsPrvMsg */

};



core::XResult<XMessageSp> UdsRecvMsg(XComId com_id, int32_t timeout_ms = core::WaitType::WaitForever);


} //namespace shmipc::com::internal

#endif /** !__SHMIPC_COM_INTERNAL_UDS_COM_H__ */
